package com.lianxian.xindong.commonsdk.utils;

import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
import android.text.TextWatcher;
import android.widget.EditText;

import com.hxb.library.utils.HxbUtils;
import com.hxb.library.utils.LogUtils;

/**
 * @Author :hexingbo
 * @Date :2019/10/23
 * @FileName： EditTextNumberUtil
 * @Describe :
 */
public class EditTextNumberUtil {

    /**
     * 输入框限制输入
     *
     * @param view 默认10位
     * @param number 输入的类型0，0.0,0.00，等小数保留位数
     */
    public static void setInputType(EditText view, String number) {
        setInputType(view, number, 9);//防止后台数据插入不进去，限制最大位数
    }

    /**
     * 输入框限制输入
     *
     * @param view
     * @param number 输入的类型0，0.0,0.00，等小数保留位数
     * @param length 整数部分长度
     */
    public static void setInputType(EditText view, String number, int length) {
        int mNumberDigits = 0;
        if (!HxbUtils.isEmpty(number) && number.contains(".")) {
            mNumberDigits = number.length() - (number.indexOf(".") + 1);
        }
        LogUtils.warnInfo("hxb--输入框限制输入：" + mNumberDigits);
        if (view != null) {
            // 设置输入的类型为带小数类型
            // 等价于xml中属性 android:inputType="numberDecimal"
            view.setInputType(mNumberDigits == 0 ? InputType.TYPE_CLASS_NUMBER : InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);

            // 限制小点前后数字长度(当前设置为前10后2)
//        view.addFilters(new InputFilter[]{new DecimalInputFilter(10, 2)});
            // 通过实现InputFilter接口来完成长度的限制
            view.setFilters(new InputFilter[]{new DecimalInputFilter(length, mNumberDigits)});

            view.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {

                }

                @Override
                public void afterTextChanged(Editable s) {
                    String trim = view.getText().toString().trim();
                    if (trim == null) return;
                    if (trim.contains(".")) {
                        if (trim.equals(".")) {
                            view.setText("0.");
                            view.setSelection(view.getText().length());
                            return;
                        }
//                    else {
//                        //小数位3位
//                        if (trim.length() - trim.indexOf(".") > 4) {
//                            String substring = trim.substring(0, trim.length() - 1);
//                            etValue.setText(substring);
//                            etValue.setSelection(substring.length());
//                            return;
//                        }
//                    }
                    } else {
                        if (trim.length() == 2) {
                            //防止输入00
                            if (trim.substring(0, 1).equals("0")) {
                                view.setText(trim.substring(1, 2));
                                view.setSelection(1);
                            }
                        }
                    }
                }
            });
        }
    }
}
